package com.dfe.backend.common.sax.spd.substation.region.device;

import lombok.Data;

import java.util.List;

/**
 * 【描述】：表示子设备，符合以下规定：
 * a)SubDevice元素中不应包含SubDevice元素。
 * b)当SubDevice元素的partName属性不为空时，SubDevice元素由名称与partName属性值相同的PartTemplate元素实例化而来，同时PartTemplate下所有PinTemplate、ComponentTemplate、InPartTemplate、InCoreTemplate子元素均隐式实例化为Pin、Component、InDevice、InCore元素,并可通过显式实例化重新定义元素的部分属性。
 * c)当SubDevice元素的partName属性为空时，可根据需要定义SubDevice下所有的Pin、Component、InDevice、InCore元素及其属性。
 *
 * @author LiChang
 * @since 2025-7-29 13:34
 */
@Data
public class SubDevice {
    /**
     * 子设备的编号，应在Device元素下唯一
     */
    private String name;
    /**
     * 子设备描述
     */
    private String desc;
    /**
     * 子设备铭牌文本
     */
    private String label;
    /**
     * 子设备编码，宜遵循NB/T 11198的规定
     */
    private String gridId;
    /**
     * 电网资产统一身份编码
     */
    private String objectId;
    /**
     * 对应的PartTemplate名称，当子设备具备型号时，要求该属性不可为空
     */
    private String partName;
    /**
     * 子设备型号
     */
    private String type;
    /**
     * 子设备制造厂商的名称
     */
    private String manufacturer;
    /**
     * 子设备类型，注意这里应为class，但冲突，所以定为className
     */
    private String className;

    private List<InDevice> inDeviceList;

    private List<Component> componentList;

    private List<InCore> inCoreList;

    private List<Pin> pinList;
}
